home *** CD-ROM | disk | FTP | other *** search
/ Quick PC 61 / Quick PC 61.iso / I386 / PCHDT_E3.CAB / SIhtm_06.js < prev    next >
Encoding:
Text File  |  2003-02-21  |  26.4 KB  |  813 lines

  1. var remoteServer;//local if not set
  2. var g_dictDrivers = null; //dictionary. key = deviceID, item = issigned
  3.  
  4. function DisplayLocStrings() {
  5.   WaitMessage.innerHTML = MSG_WAIT;
  6.   Refresh.innerHTML = TAG_REFRESH;
  7.   
  8.   localHardDrive.all.Caption.innerHTML = TAG_LOCALDISK;
  9.  
  10.   with(Display.all) {    
  11.     Caption.innerHTML = TAG_DISPLAY;
  12.     label1.innerHTML = TAG_TYPE + ":";
  13.     label2.innerHTML = TAG_COLOR + ":";
  14.     label3.innerHTML = TAG_RESOLUTION + ":";
  15.     label4.innerHTML = TAG_SCRSAVER + ":";
  16.   }
  17.   
  18.   with(Video.all) {          
  19.     Caption.innerHTML = TAG_VIDEOCARD;
  20.     label1.innerHTML = TAG_MODEL + ":";
  21.     label2.innerHTML = TAG_DRIVER + ":";
  22.   }
  23.       
  24.   with(Modem.all) {    
  25.     Caption.innerHTML = TAG_MODEM;
  26.     label1.innerHTML = TAG_MANUFACTURER + ":";
  27.     label2.innerHTML = TAG_MODEL + ":";
  28.     label3.innerHTML = TAG_DRIVER + ":";
  29.   }
  30.       
  31.   with(Sound.all) {    
  32.     Caption.innerHTML = TAG_SOUNDCARD;
  33.     label1.innerHTML = TAG_MANUFACTURER + ":";
  34.     label2.innerHTML = TAG_MODEL + ":";
  35.     label3.innerHTML = TAG_DRIVER + ":";
  36.   }
  37.       
  38.   with(Usb.all) {    
  39.     Caption.innerHTML = TAG_USBCTRLR;
  40.     label1.innerHTML = TAG_MANUFACTURER + ":";
  41.     label2.innerHTML = TAG_MODEL + ":";
  42.     label3.innerHTML = TAG_DRIVER + ":";
  43.   }
  44.       
  45.   with(Network.all) {    
  46.     Caption.innerHTML = TAG_NWCARD;
  47.     label1.innerHTML = TAG_MODEL + ":";
  48.     label2.innerHTML = TAG_DRIVER + ":";
  49.   }
  50.       
  51.   with(Cddrive.all) {    
  52.     Caption.innerHTML = TAG_CDROMDRIVE;
  53.     label1.innerHTML = TAG_MANUFACTURER + ":";
  54.     label2.innerHTML = TAG_MODEL + ":";
  55.     label3.innerHTML = TAG_DRIVER + ":";
  56.   }
  57.   
  58.   with(Memory.all) {
  59.     Caption.innerHTML = TAG_MEMORY;
  60.     label1.innerHTML = TAG_CAPACITY + ":";
  61.   }
  62.     
  63.   Floppy.all.Caption.innerHTML = TAG_FLOPPYDRIVE;
  64.   Printers.all.Caption.innerHTML = TAG_PRINTERS;
  65. }
  66.  
  67. function IsSigned(id) {
  68.   var bSigned = null; //unknown
  69.   if(g_dictDrivers.Exists(id))
  70.   {
  71.     var bSigned = g_dictDrivers.Item(id);
  72.   }
  73.  
  74.   return bSigned;
  75. }
  76.  
  77. function GetDriverInfo()
  78. {
  79.   g_dictDrivers = new ActiveXObject("Scripting.Dictionary");
  80.  
  81.   var loc = wbemlocator;
  82.   var svcs = loc.ConnectServer(remoteServer);
  83.   svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate;
  84.   
  85.   var strQuery = "Select DeviceID, IsSigned From Win32_PnPSignedDriver";
  86.   var colDevices = new Enumerator(svcs.ExecQuery(strQuery));
  87.  
  88.   for(; !colDevices.atEnd(); colDevices.moveNext()) 
  89.   {
  90.     var device = colDevices.item();
  91.     try
  92.     {
  93.       g_dictDrivers.add(device.DeviceID, device.IsSigned);
  94.     } 
  95.     catch(e)
  96.     {
  97.       //do nothing
  98.     }
  99.   }
  100. }
  101.  
  102. var INCR_UNIT = 100/11;//move progress bar in increments of INCR_UNIT
  103. function LoadChores(taskId) {
  104.   try {
  105.  
  106.     switch(taskId)
  107.     {
  108.       case 0:
  109.         remoteServer = ShowServerName(TAG_HARDWARE);
  110.         break;
  111.  
  112.       case 1:
  113.         DrawProgressBar(INCR_UNIT, TAG_LOCALDISK);
  114.         break;
  115.       case 2:
  116.         GetDriverInfo();//PENDING deserves it's own taskid 
  117.         getLocalHardDrive();
  118.         break;
  119.  
  120.       case 3:
  121.         DrawProgressBar(INCR_UNIT * 2, TAG_DISPLAY);
  122.       case 4:
  123.         getDisplay();
  124.         break;
  125.  
  126.       case 5:
  127.         DrawProgressBar(INCR_UNIT * 3, TAG_VIDEOCARD);
  128.         break;
  129.       case 6:
  130.         getVideoCard();
  131.         break;
  132.  
  133.       case 7:
  134.         DrawProgressBar(INCR_UNIT * 4, TAG_MODEM);
  135.         break;
  136.       case 8:
  137.         getModem();
  138.         break;
  139.  
  140.       case 8:
  141.         DrawProgressBar(INCR_UNIT * 5, TAG_SOUNDCARD); 
  142.         break;
  143.       case 9:
  144.         getSoundCard();
  145.         break;
  146.  
  147.       case 10:
  148.         DrawProgressBar(INCR_UNIT * 6, TAG_USBCTRLR);
  149.         break;
  150.       case 11:
  151.         getUSB();
  152.         break;
  153.  
  154.       case 12:
  155.         DrawProgressBar(INCR_UNIT * 7, TAG_NWCARD);
  156.         break;
  157.       case 13:
  158.         getNetworkCard();
  159.         break;
  160.  
  161.       case 14:
  162.         DrawProgressBar(INCR_UNIT * 8, TAG_CDROMDRIVE);
  163.         break;
  164.       case 15:
  165.         getCDDrive();
  166.         break;
  167.  
  168.       case 16:
  169.         DrawProgressBar(INCR_UNIT * 9, TAG_FLOPPYDRIVE);
  170.         break;
  171.       case 17:
  172.         getFloppyDrive();
  173.         break;
  174.  
  175.       case 18:
  176.         DrawProgressBar(INCR_UNIT * 10, TAG_PRINTERS);
  177.         break;
  178.       case 19:
  179.         getPrinter();
  180.         break;
  181.  
  182.       case 20:
  183.         DrawProgressBar(INCR_UNIT * 11, TAG_MEMORY);
  184.         break;
  185.       case 21:
  186.         getMemory();
  187.         break;
  188.  
  189.       default:
  190.          taskId = -1;
  191.          _header.style.display = "none";
  192.          _data.style.display = "";
  193.          _body.style.cursor= "default";
  194.     }
  195.     
  196.     if(taskId >= 0)
  197.       window.setTimeout("LoadChores(" + ++taskId + ")", TIMEOUT);
  198.   }
  199.   
  200.   catch (e) {
  201.     HandleErr(e);
  202.   }
  203. }
  204.  
  205. function dispatchFunction() {
  206.   _body.style.cursor= "wait";
  207.   
  208.   SetProgressBarImage();
  209.   DisplayLocStrings();
  210.   window.setTimeout("LoadChores(0)", TIMEOUT);  
  211. }
  212.  
  213. function displayTableSegment(outerDiv, dataArray) {
  214.   var strMsg = "<table width=\"100%\" cellspacing=0 cellpadding=0><tr class=\"sys-table-cell-bgcolor1 sys-font-body sys-color-body\"><td align='left' style=\"padding : 0.5em;\">%arg1%</td></tr></table>";
  215.   var strHTML = "";
  216.   var noOfInstances = dataArray.length;    
  217.   if (noOfInstances == 0)
  218.     document.all[outerDiv].outerHTML = strMsg.replace(/%arg1%/, TAG_NOTINSTALLED);
  219.   else 
  220.   {
  221.     var tableElement = document.all[outerDiv.charAt(0).toUpperCase() + outerDiv.substr(1)];  
  222.     for(var i=0; i < noOfInstances; i++)  
  223.     {
  224.       for(var k=0; k < dataArray[i].length; k++)
  225.         if (dataArray[i][k] != null)
  226.       document.all[outerDiv + "_" + (k+1)].innerHTML = dataArray[i][k];
  227.       strHTML = strHTML + (strHTML == "" ? "" : " ") + tableElement.outerHTML;
  228.     }
  229.  
  230.     tableElement.outerHTML = strHTML;
  231.   }
  232. }
  233.  
  234. //same as displayTableSegment, except process two items at a time.
  235. function displayTableSegmentEx(outerDiv, dataArray) {
  236.   var tableElement = document.all[outerDiv];
  237.   var strHTML = "";
  238.   var strMsg = "<table width=\"100%\" cellspacing=0 cellpadding=0><tr class=\"sys-table-cell-bgcolor1 sys-font-body sys-color-body\"><td align='left' style=\"padding : 0.5em;\">%arg1%</td></tr></table>";
  239.   var strBlankTbl = "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tr class=\"sys-table-cell-bgcolor1\"><td style=\"padding : 0.5em;\"> </td></tr></table>";
  240.  
  241.   var noOfInstances = dataArray.length;
  242.   if (noOfInstances == 0)
  243.       tableElement.outerHTML = strMsg.replace(/%arg1%/, TAG_NOTINSTALLED);
  244.   else  {
  245.     for(var i=0; i<noOfInstances; i+=2) {
  246.       for(var j=0, l=dataArray[i].length; j<2; j++) {
  247.         if ((i+j) < noOfInstances)  {
  248.           for(var k=0; k<l; k++)
  249.                 if (dataArray[i+j][k] != null)
  250.                     tableElement.all[outerDiv + "_" + (j+1) + "_" + (k+1)].innerHTML = dataArray[i+j][k];
  251.               }      
  252.         else if (tableElement.all.part2 != null)
  253.           tableElement.all.part2.outerHTML = strBlankTbl;    
  254.       }
  255.       strHTML += tableElement.outerHTML;
  256.     }
  257.     tableElement.outerHTML = strHTML;
  258.   }
  259. }
  260.  
  261. function displayLocalHardDriveInfo(localDisks)  {
  262.   var localDriveElement;
  263.   var partitionElement;
  264.   
  265.   var strHTMLDisks = "";
  266.   var strHTMLPartition = "";
  267.   var s1 = document.all["localHardDrive"].outerHTML;
  268.   var s2 = document.all["partition"].outerHTML;
  269.   var strBlankTbl = "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tr class=\"sys-table-cell-bgcolor1\"><td style=\"padding : 0.5em;\"> </td></tr></table>";
  270.   var strMsg = "<table width=\"100%\" cellspacing=0 cellpadding=0><tr class=\"sys-table-cell-bgcolor1 sys-font-body sys-color-body\"><td align='left' style=\"padding : 0.5em;\">%arg1%</td></tr></table>";
  271.   
  272.   if (localDisks.length == 0)
  273.     document.all["partition"].outerHTML = strMsg.replace(/%arg1%/, TAG_NOTINSTALLED);
  274.   else  {
  275.     for(var i = 0; i < localDisks.length ; i++)//for each device
  276.     {
  277.       var iPartitions = localDisks[i].length - 1;
  278.       
  279.       document.all["localHardDrive"].outerHTML = s1;
  280.       localDriveElement = document.all["localHardDrive"];
  281.       
  282.       localDriveElement.all["localHardDrive_partitionStatus"].innerHTML = "(" + (iPartitions > 1?TAG_PARTITIONED:TAG_NONPARTITIONED) + ")";
  283.       localDriveElement.all["localHardDrive_model"].innerHTML = localDisks[i][0];
  284.       
  285.       if (document.all["partition"].length == null)
  286.         partitionElement = document.all["partition"];
  287.       else  {
  288.         document.all["partition"][0].outerHTML = s2;
  289.         partitionElement = document.all["partition"][0];
  290.       }  
  291.           
  292.       strHTMLPartition = "";
  293.       var iRows = 1;
  294.       if (iPartitions > 2)
  295.         iRows = parseInt(iPartitions/2) + (iPartitions%2);
  296.       
  297.       for(var k = 1, j = 1; k <= iRows; k++)  {
  298.         for(var l = 1; l <= 2; l++) {
  299.           if (j < localDisks[i].length)
  300.             for(var m = 0; m < localDisks[i][j].length; m++)
  301.               partitionElement.all["partition_" + l + "_" + (m+1)].innerHTML=localDisks[i][j][m];
  302.           else if (partitionElement.all.part2 != null)
  303.             partitionElement.all.part2.outerHTML = strBlankTbl;
  304.  
  305.           j++;  
  306.         } 
  307.         
  308.         strHTMLPartition += partitionElement.outerHTML;    
  309.       }
  310.  
  311.       partitionElement.outerHTML = strHTMLPartition;
  312.       strHTMLDisks += localDriveElement.outerHTML;
  313.     }
  314.     localDriveElement.outerHTML = strHTMLDisks;
  315.   }
  316. }
  317.  
  318. function getLocalHardDrive()
  319. {
  320.   //Local Hard Drive
  321.     var loc = wbemlocator;
  322.     var svcs = loc.ConnectServer(remoteServer)
  323.     svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate;
  324.     var strQuery = "Select * From Win32_DiskDrive";
  325.     var colLocalDisks = new Enumerator(svcs.ExecQuery(strQuery));
  326.     /*
  327.     localDisks[0] -> localDiskInfo
  328.     ...
  329.     localDisks[n] -> localDiskInfo
  330.     */
  331.     var localDisks = new Array();
  332.     for(; !colLocalDisks.atEnd(); colLocalDisks.moveNext())
  333.     {/*
  334.       localDiskInfo[0] = Local Disk Model
  335.       localDiskInfo[1] -> partitionInfo[0] = Disk Name
  336.       ...                 partitionInfo[1] = Used Space 
  337.                           partitionInfo[2] = Free Space
  338.                           partitionInfo[3] = Disk Usage Image Name
  339.       localDiskInfo[n] -> -do-
  340.       */
  341.           
  342.       var localDiskInfo = new Array();
  343.       var localDisk = colLocalDisks.item();
  344.       strQuery = "Associators of {Win32_DiskDrive.DeviceID=\"" + localDisk.DeviceID.replace(/\\/g, "\\\\") + "\"} Where ResultClass = Win32_DiskPartition";
  345.       var colPartitions = new Enumerator(svcs.ExecQuery(strQuery));
  346.           
  347.       localDiskInfo[0] = localDisk.Model ? localDisk.Model : "";
  348.       if(colPartitions.atEnd())
  349.       {
  350.          var partitionInfo = new Array(5);
  351.          partitionInfo[0] = TAG_INSTALLED;
  352.          partitionInfo[1] = "";
  353.          partitionInfo[2] = TAG_NONE;
  354.          partitionInfo[3] = TAG_USED + ":";
  355.          partitionInfo[4] = TAG_UNKNOWN;
  356.          partitionInfo[5] = TAG_FREE + ":";
  357.          partitionInfo[6] = TAG_UNKNOWN;
  358.          localDiskInfo[localDiskInfo.length] = partitionInfo;
  359.       }    
  360.       for(; !colPartitions.atEnd(); colPartitions.moveNext())
  361.       {
  362.         var partition = colPartitions.item();
  363.         strQuery = "Associators of {Win32_DiskPartition.DeviceID=\"" + partition.DeviceID + "\"} Where ResultClass = Win32_LogicalDisk";    
  364.         var colLogicalDisks = new Enumerator(svcs.ExecQuery(strQuery));
  365.         if (!colLogicalDisks.atEnd())
  366.         {
  367.           var logicalDisk = colLogicalDisks.item();
  368.           with (logicalDisk)  
  369.           {
  370.             var partitionInfo = new Array(5);
  371.             partitionInfo[0] = "(" + Name + ")";
  372.             partitionInfo[1] = TAG_CAPACITY + " - " + (Size ? fig2Words(Size) : TAG_UNKNOWN) + " ";
  373.             var nUsedSpace = (Size && FreeSpace ? Size - FreeSpace : null);
  374.             if(Size && FreeSpace)
  375.             {
  376.               var nPerUsage = Math.round(nUsedSpace/(nUsedSpace + parseInt(FreeSpace)) * 100);
  377.           var strGifPath = "Graphics\\33x16pie\\" + determineRange(nPerUsage) + "_chart.gif";
  378.               partitionInfo[2] = "<IMG Border=0 SRC=" + strGifPath + ">";
  379.             }
  380.             else
  381.               partitionInfo[2] = " ";  
  382.  
  383.                 partitionInfo[3] = TAG_USED + ":";
  384.                 partitionInfo[4] = nUsedSpace ? fig2Words(nUsedSpace) : TAG_UNKNOWN;
  385.  
  386.                 partitionInfo[5] = TAG_FREE + ":";
  387.              partitionInfo[6] = FreeSpace ? fig2Wordsfloor(FreeSpace) : TAG_UNKNOWN;
  388.  
  389.             
  390.               //for(i=0; i < partitionInfo.length; i++)
  391.                 //alert("partitionInfo[" + i + "]=" + partitionInfo[i]);
  392.  
  393.             localDiskInfo[localDiskInfo.length] = partitionInfo;
  394.           }//EO with (logicalDisk)
  395.         }else{
  396.             var partitionInfo = new Array(5);
  397.             partitionInfo[0] = TAG_INSTALLED;
  398.             partitionInfo[1] = TAG_CAPACITY + " - " + (partition.Size ? fig2Words(partition.Size) : TAG_UNKNOWN) + " ";
  399.             partitionInfo[2] = TAG_NONE;
  400.             partitionInfo[3] = TAG_USED + ":";
  401.             partitionInfo[4] = TAG_UNKNOWN;
  402.             partitionInfo[5] = TAG_FREE + ":";
  403.             partitionInfo[6] = TAG_UNKNOWN;
  404.             localDiskInfo[localDiskInfo.length] = partitionInfo;
  405.         } 
  406.       }//for colPartitions
  407.           
  408.       localDisks[localDisks.length] = localDiskInfo;
  409.     }//for colLocalDisks
  410.         
  411.     displayLocalHardDriveInfo(localDisks);
  412.     
  413. }//EO getLocalHardDrive
  414.  
  415. function getDisplay()
  416. {
  417.   //Display
  418.   var loc = wbemlocator;
  419.     var svcs = loc.ConnectServer(remoteServer)
  420.     svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate;
  421.     var scrSavrActive = "";
  422.     var color = "";
  423.     var resolution = "";
  424.       
  425.     var strQuery = "Select * From Win32_ComputerSystem";
  426.     var colCompSys = new Enumerator(svcs.ExecQuery(strQuery));
  427.     if (!colCompSys.atEnd())
  428.     {
  429.       scrSavrActive = TAG_UNKNOWN;
  430.       var inst = colCompSys.item();
  431.       if(inst.UserName)
  432.       {
  433.         strQuery = "Select * From Win32_Desktop Where Name = \"" + inst.UserName.replace(/\\/g, "\\\\") + "\"";
  434.         var colDesktop = new Enumerator(svcs.ExecQuery(strQuery));
  435.         if (!colDesktop.atEnd())
  436.         {
  437.           inst = colDesktop.item();
  438.           scrSavrActive = (inst.ScreenSaverExecutable==null)? TAG_NOTACTIVE : TAG_ACTIVE;
  439.         }
  440.       }
  441.   }
  442.     
  443.   var cls = svcs.get("Win32_VideoController");
  444.     var colVdoCtrl = new Enumerator(cls.Instances_())
  445.     if (!colVdoCtrl.atEnd())
  446.     {
  447.       var inst = colVdoCtrl.item();
  448.       color = getColorString(inst.CurrentBitsPerPixel);
  449.       resolution = inst.CurrentHorizontalResolution + " x " + inst.CurrentVerticalResolution;
  450.     }
  451.     
  452.   var cls = svcs.get("Win32_DesktopMonitor");
  453.   var insts = new Enumerator(cls.Instances_())
  454.     var mainArray = new Array();
  455.     for(; !insts.atEnd(); insts.moveNext())
  456.     {
  457.         var inst = insts.item();
  458.         var subArray = new Array(4);
  459.         subArray[0] = inst.MonitorType;
  460.         subArray[1] = color;//same across all instances of desktopMonitor
  461.         subArray[2] = resolution;//same across all instances of desktopMonitor
  462.         subArray[3] = scrSavrActive;//same across all instances of desktopMonitor
  463.      
  464.         mainArray[mainArray.length] = subArray;
  465.     }
  466.     
  467.     displayTableSegment("display", mainArray);
  468. }
  469.  
  470. function getVideoCard()
  471. {
  472.   //Video
  473.     var loc = wbemlocator;
  474.     var svcs = loc.ConnectServer(remoteServer)
  475.     svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate;
  476.     var cls = svcs.get("Win32_VideoController");
  477.     var insts = new Enumerator(cls.Instances_())
  478.     var mainArray = new Array();
  479.       
  480.     for(; !insts.atEnd(); insts.moveNext())
  481.     {
  482.       var inst = insts.item();
  483.       var subArray = new Array(2);
  484.         subArray[0] = inst.Name;
  485.         var strDriver = ""; //driver file + manufacturer + install dt + signed or not
  486.       strQuery = "Associators of {Win32_PnPEntity.DeviceID=\"" +  inst.PNPDeviceID.replace(/\\/g, "\\\\") + "\"} Where Resultclass = CIM_Datafile";
  487.       var colData = new Enumerator(svcs.ExecQuery(strQuery));
  488.       if (!colData.atEnd())
  489.       {
  490.         var data = colData.item();
  491.         strDriver = data.FileName + "." + data.Extension + "<BR>";
  492.           
  493.         strDriver+= getDateTime(data.InstallDate) + "<BR>" ;
  494.         strDriver+= "<span onmouseover='ShowTip(this)'>" + (IsSigned(inst.PNPDeviceID) ? TAG_SUPPORTED : TAG_NOTSUPPORTED) + "</span>";
  495.       }  
  496.         subArray[1] = strDriver;
  497.         mainArray[mainArray.length] = subArray;
  498.     }
  499.  
  500.     displayTableSegment("video", mainArray);
  501. }
  502.  
  503. function getPrinter()
  504. {
  505.   var isDefault = false;
  506.   var DEFAULT_PRN_IMG = "<img border=0 src=\"Graphics\\check.gif\">";
  507.   
  508.   //Printer
  509.   var loc = wbemlocator;
  510.   var svcs = loc.ConnectServer(remoteServer)
  511.   svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate;
  512.   var cls = svcs.get("Win32_Printer");
  513.   var insts = new Enumerator(cls.Instances_())
  514.   var mainArray = new Array();
  515.   for(; !insts.atEnd(); insts.moveNext())
  516.   {
  517.     var inst = insts.item();
  518.     var subArray = new Array(4);
  519.     isDefault = inst.Default;
  520.     if(isDefault)
  521.     {
  522.       subArray[0] = DEFAULT_PRN_IMG;
  523.       subArray[1] = TAG_DEFAULTPRINTER;
  524.     }
  525.     else
  526.       subArray[0] = subArray[1] = " ";
  527.     subArray[2] = inst.DriverName;
  528.     subArray[3] = TAG_DRIVER + ":";
  529.                     
  530.     var strDriver = TAG_UNKNOWN; //driver file + manufacturer + install dt + signed or not
  531.     strQuery = "Associators of {Win32_Printer.DeviceID=\"" +  inst.DeviceID.replace(/\\/g, "\\\\") + "\"} Where Resultclass = CIM_Datafile";
  532.     var colData = new Enumerator(svcs.ExecQuery(strQuery));
  533.     if(!colData.atEnd())
  534.     {
  535.       var data = colData.item();
  536.       strDriver = data.FileName + "." + data.Extension + "<BR>";
  537.       strDriver+= getDateTime(data.InstallDate) + "<BR>" ;
  538.       if(inst.DeviceID != null)
  539.       {
  540.         var bSigned = IsSigned(inst.DeviceID);
  541.  
  542.         if(null != bSigned)
  543.           strDriver+= "<span onmouseover='ShowTip(this)'>" + (bSigned ? TAG_SUPPORTED : TAG_NOTSUPPORTED) + "</span>";
  544.         else
  545.           strDriver+= TAG_UNKNOWN;
  546.       }
  547.       else  
  548.     strDriver+= TAG_UNKNOWN;
  549.     }  
  550.  
  551.     subArray[4] = strDriver;
  552.       
  553.     //always show the default printer first.
  554.     if(isDefault && mainArray.length > 0) 
  555.     {
  556.       var arrTmp = mainArray[0];
  557.       mainArray[0] = subArray;   
  558.       subArray = arrTmp;
  559.     }
  560.  
  561.     mainArray[mainArray.length] = subArray;
  562.   }
  563.       
  564.   displayTableSegmentEx("printer", mainArray);
  565. }
  566.  
  567. function getSoundCard()
  568. {
  569.   //Sound
  570.     var loc = wbemlocator;
  571.     var svcs = loc.ConnectServer(remoteServer)
  572.     svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate;
  573.     var cls = svcs.get("Win32_SoundDevice");
  574.     var insts = new Enumerator(cls.Instances_())
  575.     var mainArray = new Array();
  576.     for(; !insts.atEnd(); insts.moveNext())
  577.     {
  578.       var inst = insts.item();
  579.       var subArray = new Array(3);
  580.       subArray[0] = inst.Manufacturer ? inst.Manufacturer : TAG_UNKNOWN;
  581.         subArray[1] = inst.ProductName;
  582.         var strDriver = ""; //driver file + manufacturer + install dt + signed or not
  583.       strQuery = "Associators of {Win32_PnPEntity.DeviceID=\"" +  inst.PNPDeviceID.replace(/\\/g, "\\\\") + "\"} Where Resultclass = CIM_Datafile";
  584.       var colData = new Enumerator(svcs.ExecQuery(strQuery));
  585.       if (!colData.atEnd())
  586.       {
  587.         var data = colData.item();
  588.         strDriver = data.FileName + "." + data.Extension + "<BR>";
  589.           
  590.         strDriver+= getDateTime(data.InstallDate) + "<BR>" ;
  591.         strDriver+= "<span onmouseover='ShowTip(this)'>" + (IsSigned(inst.PNPDeviceID) ? TAG_SUPPORTED : TAG_NOTSUPPORTED) + "</span>"; 
  592.       }  
  593.         subArray[2] = strDriver;
  594.         mainArray[mainArray.length] = subArray;
  595.     }
  596.  
  597.     displayTableSegment("sound", mainArray);
  598. }
  599.  
  600. function getUSB()
  601. {
  602.   //USB
  603.     var loc = wbemlocator;
  604.     var svcs = loc.ConnectServer(remoteServer)
  605.     svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate;
  606.     var cls = svcs.get("Win32_USBController");
  607.     var insts = new Enumerator(cls.Instances_())
  608.     var mainArray = new Array();
  609.       
  610.     for(; !insts.atEnd(); insts.moveNext())
  611.     {
  612.       var inst = insts.item();
  613.       var subArray = new Array(3);
  614.         subArray[0] = inst.Manufacturer ? inst.Manufacturer : TAG_UNKNOWN;
  615.         subArray[1] = inst.Name;
  616.         var strDriver = ""; //driver file + manufacturer + install dt + signed or not
  617.       strQuery = "Associators of {Win32_PnPEntity.DeviceID=\"" +  inst.PNPDeviceID.replace(/\\/g, "\\\\") + "\"} Where Resultclass = CIM_Datafile";
  618.       var colData = new Enumerator(svcs.ExecQuery(strQuery));
  619.       if (!colData.atEnd())
  620.       {
  621.         var data = colData.item();
  622.         strDriver = data.FileName + "." + data.Extension + "<BR>";
  623.           
  624.         strDriver+= getDateTime(data.InstallDate) + "<BR>" ;
  625.         strDriver+= "<span onmouseover='ShowTip(this)'>" + (IsSigned(inst.PNPDeviceID) ? TAG_SUPPORTED : TAG_NOTSUPPORTED) + "</span>";
  626.       }  
  627.         subArray[2] = strDriver;
  628.         mainArray[mainArray.length] = subArray;
  629.     }
  630.  
  631.     displayTableSegment("usb", mainArray);
  632. }
  633.  
  634. function getNetworkCard()
  635. {
  636.   //Network Card
  637.   var loc = wbemlocator;
  638.   var svcs = loc.ConnectServer(remoteServer)
  639.   svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate;
  640.   var strQuery = "Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = TRUE";
  641.   var insts = new Enumerator(svcs.ExecQuery(strQuery));
  642.   var mainArray = new Array();
  643.       
  644.   for(; !insts.atEnd(); insts.moveNext())
  645.   {
  646.     var inst = insts.item();
  647.     var subArray = new Array(2);
  648.     subArray[0] = inst.Description;
  649.     var strDriver = TAG_UNKNOWN; //driver file + manufacturer + install dt + signed or not
  650.         
  651.     strQuery = "Associators of {Win32_NetworkAdapterConfiguration.Index=" + inst.Index + "}";
  652.     var colNetworkAdapter = new Enumerator(svcs.ExecQuery(strQuery));
  653.     if (!colNetworkAdapter.atEnd())
  654.     {
  655.       var networkAdapter = colNetworkAdapter.item();
  656.       if(networkAdapter.PNPDeviceID)
  657.       {
  658.         strQuery = "Associators of {Win32_PnPEntity.DeviceID=\"" +  networkAdapter.PNPDeviceID.replace(/\\/g, "\\\\") + "\"} Where Resultclass = CIM_Datafile";
  659.         var colData = new Enumerator(svcs.ExecQuery(strQuery));
  660.     if (!colData.atEnd())
  661.     {
  662.           var data = colData.item();
  663.           strDriver = data.FileName + "." + data.Extension + "<BR>";
  664.             
  665.           strDriver+= getDateTime(data.InstallDate) + "<BR>" ;
  666.           strDriver+= "<span onmouseover='ShowTip(this)'>" + (IsSigned(networkAdapter.PNPDeviceID) ? TAG_SUPPORTED : TAG_NOTSUPPORTED) + "</span>";
  667.         }  
  668.       }
  669.     }
  670.  
  671.     subArray[1] = strDriver;  
  672.     mainArray[mainArray.length] = subArray;
  673.   }
  674.  
  675.   displayTableSegment("network", mainArray);
  676. }
  677.  
  678. function getCDDrive()
  679. {
  680.   //CD Drive
  681.   var loc = wbemlocator;
  682.     var svcs = loc.ConnectServer(remoteServer)
  683.     svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate;
  684.   var cls = svcs.get("Win32_CDROMDrive");
  685.   var insts = new Enumerator(cls.Instances_())
  686.   var mainArray = new Array();
  687.   for(; !insts.atEnd(); insts.moveNext())
  688.   {
  689.     var inst = insts.item();
  690.     var subArray = new Array(4);
  691.         subArray[0] = "(" + inst.Drive + ")";
  692.         subArray[1] = inst.Manufacturer ? inst.Manufacturer : TAG_UNKNOWN;
  693.         subArray[2] = inst.Name;
  694.         var strDriver = ""; //driver file + manufacturer + install dt + signed or not
  695.         
  696.       strQuery = "Associators of {Win32_PnPEntity.DeviceID=\"" +  inst.PNPDeviceID.replace(/\\/g, "\\\\") + "\"} Where Resultclass = CIM_Datafile";
  697.       var colData = new Enumerator(svcs.ExecQuery(strQuery));
  698.       if (!colData.atEnd())
  699.       {
  700.         var data = colData.item();
  701.         strDriver = data.FileName + "." + data.Extension + "<BR>";
  702.         strDriver+= getDateTime(data.InstallDate) + "<BR>" ;
  703.       strDriver+= "<span onmouseover='ShowTip(this)'>" + (IsSigned(inst.PNPDeviceID) ? TAG_SUPPORTED : TAG_NOTSUPPORTED) + "</span>";
  704.       }  
  705.         subArray[3] = strDriver;
  706.         mainArray[mainArray.length] = subArray;
  707.   }
  708.  
  709.   displayTableSegment("cddrive", mainArray);
  710.   
  711. }//EO getCDDrive
  712.  
  713. function getFloppyDrive()
  714. {
  715.   var DEVICETYPE_REMOVABLE = 2;
  716.   var DEVICETYPE_LOCAL = 3;
  717.   var DEVICETYPE_COMPACT = 5;
  718.   
  719.   //Floppy Drive
  720.     var loc = wbemlocator;
  721.     var svcs = loc.ConnectServer(remoteServer);
  722.     svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate;
  723.       
  724.     var strQuery = "Select * From Win32_LogicalDisk Where DriveType = " + DEVICETYPE_REMOVABLE;
  725.     var insts = new Enumerator(svcs.ExecQuery(strQuery));
  726.     
  727.     var mainArray = new Array();
  728.     for(; !insts.atEnd(); insts.moveNext())
  729.     {
  730.       var inst = insts.item();
  731.       var subArray = new Array(2);
  732.       subArray[0] = "(" + inst.Name + ")";//drive letter
  733.       subArray[1] = TAG_INSTALLED;
  734.       mainArray[mainArray.length] = subArray;
  735.     }
  736.  
  737.     displayTableSegment("floppy", mainArray);
  738. }//EO getFloppyDrive
  739.  
  740. function getModem()
  741. {
  742.   //Modem
  743.   var loc = wbemlocator;
  744.   var svcs = loc.ConnectServer(remoteServer)
  745.   svcs.Security_.impersonationlevel = wbemImpersonationLevelImpersonate;
  746.  
  747.   var cls = svcs.get("Win32_POTSModem");
  748.   var insts = new Enumerator(cls.Instances_())
  749.   var mainArray = new Array();
  750.   for(; !insts.atEnd(); insts.moveNext())
  751.   {
  752.     var inst = insts.item();
  753.     var subArray = new Array(3);
  754.     subArray[0] = inst.Manufacturer ? inst.Manufacturer : TAG_UNKNOWN;
  755.     subArray[1] = inst.Model;
  756.     var strDriver = TAG_UNKNOWN;
  757.     if(inst.PNPDeviceID)
  758.     {
  759.       strQuery = "Associators of {Win32_PnPEntity.DeviceID=\"" +  inst.PNPDeviceID.replace(/\\/g, "\\\\") + "\"} Where Resultclass = CIM_Datafile";
  760.       var colData = new Enumerator(svcs.ExecQuery(strQuery));
  761.       if (!colData.atEnd())
  762.       {
  763.         var data = colData.item();
  764.         strDriver = data.FileName + "." + data.Extension + "<BR>";
  765.           
  766.         strDriver+= getDateTime(data.InstallDate) + "<BR>" ;
  767.         strDriver+= "<span onmouseover='ShowTip(this)'>" + (IsSigned(inst.PNPDeviceID) ? TAG_SUPPORTED : TAG_NOTSUPPORTED) + "</span>";
  768.       }  
  769.     }
  770.  
  771.     subArray[2] = strDriver;
  772.     mainArray[mainArray.length] = subArray;
  773.   }
  774.     
  775.   displayTableSegment("modem", mainArray);
  776. }//EO getModem
  777.  
  778.  
  779. function getMemory()
  780. {
  781.   var locator = wbemlocator;
  782.   var service = locator.ConnectServer(remoteServer);
  783.   service.Security_.impersonationlevel = 3;
  784.   
  785.   var coll = new Enumerator(service.ExecQuery("Select Capacity from Win32_PhysicalMemory"));
  786.   var memCapacity = null;
  787.   mainArray = new Array();
  788.   if (!coll.atEnd())
  789.   {
  790.     for (;!coll.atEnd();coll.moveNext())
  791.     {
  792.         var p = coll.item();
  793.         if(!isNaN(p.Capacity))
  794.           memCapacity += parseInt(p.Capacity); //in bytes.
  795.     }
  796.   }
  797.   else
  798.   {
  799.     var insts = new Enumerator(service.ExecQuery("Select * from Win32_ComputerSystem"));
  800.     for(; !insts.atEnd(); insts.moveNext())
  801.     {
  802.           var inst = insts.item();
  803.           memCapacity += parseInt(inst.TotalPhysicalMemory); //in bytes.
  804.     }
  805.   }
  806.        
  807.   var subArray = new Array(1);
  808.   subArray[0] = memCapacity ? fig2Words(memCapacity) : TAG_UNKNOWN; 
  809.   mainArray[mainArray.length] = subArray;
  810.  
  811.   displayTableSegment("memory", mainArray);
  812. }//EO getMemory
  813.